Wichtig !!! | N E U E S ... | Inhalt | Hotline | Stichwortverzeichnis |
Kapitel 5-10
Der Befehlssatz: SCREEN - TEXT HEIGHT
SCREEN | |
Typ: | Befehl |
Syntax: | SCREEN <num.Ausdruck>[,<num.Ausdruck>,<num.Ausdruck>[,<num.Ausdruck>,<num.Ausdruck>]]
SCREEN <Bildschirmnummer>[,<X>,<Y>[,<W>,<H>]] |
Erklärung: | Mit diesem Befehl können weitere Omikron Basic Ausgabefenster geöffnet werden, die dann automatisch
vom Omikron Basic verwaltet werden. Sie brauchen sich also nicht um Redraws und dergleichen zu kümmern. Der
Befehl wirkt nur, wenn der Compiler zuvor mit dem Steuerwort COMPILER
"OUTPUT_WINDOW X*Y" angewiesen wurde, einen Event-Handler für die Ausgabefenster einzubinden.
In der Syntax mit einem Parameter können Sie festlegen, in welches Fenster die Ausgaben mit PRINT, TEXT, DRAW etc. geleitet werden sollen. Die Syntax mit 3 Parametern öffnet ein neues Fenster mit der Breite <X> und der Höhe <Y> in der linken oberen Ecke des Bildschirms, während die Version mit 5 Parametern ein neues Fenster an der Stelle (<X>,<Y>) mit der Breite <W> und der Höhe <H> erzeugt. Die Syntax mit 3 Parametern kann auch zum Löschen von Ausgabefenstern benutzt werden, indem man für die Breite Null eingibt. Die Werte <X>,<Y>,<W>,<H> beziehen sich immer auf das Innere des Fensters. Wenn ein Ausgabefenster mit <Bildschirmnummer> schon existiert, wird kein neues Fenster geöffnet, sondern das vorhandene nur entsprechend den Parametern <X>,<Y>,<W>,<H> verschoben und in der Größe verändert. Omikron Basic kann insgesamt 32 solcher Fenster verwalten. Hinweis: Wenn Sie QuickDraw-Befehle oder die Funktionen der Macintosh Toolbox auf die Omikron Basic Ausgabefenster anwenden wollen, müssen Sie sich zunächst die zugehörigen WindowPtr und GWorldPtr mit den Funktionen 'Get_Window_Ptr' und 'Get_G_World_Ptr' aus der ExtensionLibrary holen. Diese übergeben Sie dann an die entsprechenden MacOS-Funktionen. Bedenken Sie bitte, daß zu jedem Fenster eine Offscreen-Grafics-World gehört, in der der Fensterinhalt gepuffert wird. Zeichenbefehle müssen also sowohl im Fenster als auch in der Offscreen-Grafics-World durchgeführt werden. Achtung: Da zu jedem Ausgabefenster ein Puffer im Speicher angelegt werden muß, sollten Sie mit dem COMPILER-Steuerwort "PRE_SIZE" bzw. "MIN_SIZE" dafür sorgen, daß genug Heap-Speicher vorhanden ist. Ein Fenster mit 1280x960 Bildpunkten benötigt bei 256 Farben 1.2 MB Speicher. |
Beispiel: |
Siehe das Programm 'Mandelbrot.BAS' im Ordner 'DEMO' |
Ergebnis: | |
siehe auch: |
SEC | |
Typ: | Funktion |
Syntax: | SEC(<num.Ausdruck>) |
Erklärung: | Berechnet den Secans des numerischen Ausdrucks. Das Ergebnis ist abhängig vom eingestellten Winkelmodus. |
Beispiel: |
PRINT SEC(0.5) |
Ergebnis: |
|
siehe auch: | COSEC SIN DEG RAD |
SECH | |
Typ: | Funktion |
Syntax: | SECH(<num.Ausdruck>) |
Erklärung: | Berechnet den Secans-Hyperbolicus des numerischen Ausdrucks. |
Beispiel: |
|
Ergebnis: |
|
siehe auch: | COSECH SINH DEG RAD |
SEEK | |
Typ: | Befehl |
Syntax: | SEEK <Dateinummer>, <Position>[,<Modus>] |
Erklärung: | Mit dem SEEK-Befehl setzen Sie den internen Dateizeiger für User-Dateien. Der nächste PUT- oder GET-Befehl
schreibt bzw. liest dann ab dieser Position in der Datei. <Modus> hat folgende Bedeutung: <Modus>=0: Die angegebene Position bezieht sich auf den Dateianfang. <Modus>=1: Die Position ist relativ zur aktuellen Position gemeint. Auch negative Werte sind hier möglich (z.B. setzt -5 den Dateizeiger 5 Positionen zurück) <Modus>=2: Die Position bezieht sich auf das Dateiende. Nur negative Werte oder 0 sind hier erlaubt. Fehlt die Modusangabe, so bezieht sich <Position> auf den Dateianfang. |
Beispiel: | |
Ergebnis: | |
siehe auch: | OPEN PUT GET |
SELECT | |
Typ: | Befehl |
Syntax: | SELECT <Ausdruck> |
Erklärung: | Mit SELECT wird die SELECT ... CASE Anweisung eingeleitet. Der hinter SELECT stehende Ausdruck wird ausgewertet und auf eine Long-Integer-Zahl abgebildet. Bei String-Ausdrücken sind daher nur die ersten vier Zeichen von Belang. Abhängig von diesem einmal ermittelten Wert wird in die folgenden CASE-Teile verzweigt. Der Ausdruck wird nur einmal zu Beginn bewertet, das heißt, wenn er später noch einmal modifiziert wird, dann hat das keine Auswirkungen mehr auf die SELECT ... CASE Verzweigungen. |
Beispiel: | |
Ergebnis: | |
siehe auch: | END_SELECT CASE DEFAULT OTHERWISE CONTINUE IF |
SEGPTR | |
Typ: | Funktion |
Syntax: | SEGPTR |
Erklärung: | Die Funktion SEGPTR liefert einen Zeiger auf die globalen Variablen des Omikron Basics. Die Benutzung dieser Zeiger
sollte dem Spezialisten vorbehalten bleiben, da man durch fehlerhafte Änderungen der Einträge leicht
das ganze System zum Absturz bringen kann. Offset Speicherbereich 0 Reserviert 4 Reserviert 8 Reserviert 12 Reserviert 16 Reserviert 20 0 24 Zeiger hinter den Array-Bereich 28 0 32 Zeiger auf den gerade freien BASIC-Speicher 36 Zeiger zeigt auf den Anfang der gerade ausgeführten Programmzeile 40 Garbage-Top 44 Garbage-Bottom 48 Reserviert 52 Unsterste Adresse des BASIC-Stacks (einstellbar mit COMPILER "STACK X") 56 Reserviert 60 Höchste Speicheradresse des BASICs (einstellbar mit COMPILER "BAS_MEM" X) 64 Reserviert 68 Zeiger auf die Arrays 72 Zeiger auf den String-Heap Hinweis: Weitere globale Variablen des Omikron Basics können mit speziellen Funktionen und Prozeduren aus der ExtensionLibrary abgefragt bzw. verändert werden. (z.B. FN Get_Window_Ptr, PROC Set_Pen_Size) |
Beispiel: | |
Ergebnis: | |
siehe auch: | VARPTR ExtensionLibrary Die Speicherorganisation im Omikron Basic |
SGN | |
Typ: | Funktion |
Syntax: | SGN(<num.Ausdruck>) SGN( X ) |
Erklärung: | Die Signum-Funktion liefert: -1 für X < 0 0 für X = 0 1 für X > 0 |
Beispiel: |
|
Ergebnis: |
|
siehe auch: |
SHL | |
Typ: | Operator |
Syntax: | <num.Ausdruck>SHL <num.Ausdruck> <num.Ausdruck>SHL <Anzahl> |
Erklärung: | Verschiebt bitweise nach links. Die höchstwertigsten Bits gehen verloren. In den niederwertigsten Bits werden
Nullen nachgeschoben. Von <Anzahl> werden in jedem Fall nur die 5 niederwertigsten Bits berücksichtigt,
so daß sich hierfür Werte zwischen 0 und 31 ergeben. SHL vermittelt eine vorzeichenlose Integer-Multiplikation mit Zweier-Potenzen ("X SHL Y" entspricht "X*(2^Y)"). |
Beispiel: |
|
Ergebnis: |
|
siehe auch: | SHR |
SHR | |
Typ: | Operator |
Syntax: | <num.Ausdruck>SHR <num.Ausdruck> <num.Ausdruck>SHR <Anzahl> |
Erklärung: | Verschiebt bitweise nach rechts. Die niederwertigsten Bits gehen verloren. In den höchstwertigsten Bits werden
Nullen nachgeschoben. Von <Anzahl> werden in jedem Fall nur die 5 niederwertigsten Bits berücksichtigt,
so daß sich hierfür Werte zwischen 0 und 31 ergeben. SHR vermittelt eine vorzeichenlose Integer-Division durch Zweier-Potenzen ("X SHR Y" entspricht "X\(2^Y)"). |
Beispiel: |
|
Ergebnis: |
|
siehe auch: | SHL |
SIN | |
Typ: | Funktion |
Syntax: | SIN(<num.Ausdruck>) |
Erklärung: | Berechnet den Sinus des numerischen Ausdrucks. Das Ergebnis ist abhängig vom eingestellten Winkelmodus (siehe DEG, RAD). |
Beispiel: | |
Ergebnis: | |
siehe auch: | DEG RAD COS |
SINH | |
Typ: | Funktion |
Syntax: | SINH(<num.Ausdruck>) |
Erklärung: | Berechnet den Sinus-Hyperbolicus des numerischen Ausdrucks. |
Beispiel: |
|
Ergebnis: |
|
siehe auch: | DEG RAD COSH |
SORT [ASC] | |
Typ: | Befehl |
Syntax: | SORT [ASC] <Feldbezeichner>([<num.Ausdruck>]) [TO<Feldbezeichner>([<num.Ausdruck>])
[,<Feldbezeichner>([<num.Ausdruck>])]...] SORT [ASC] <Feldbezeichner>([<Anzahl>]) [TO<Feldbezeichner>([<Dummy>]) [,<Feldbezeichner>([<Dummy>])]...] |
Erklärung: | SORT sortiert ein eindimensionales Feld. Die Feldelemente werden in aufsteigender Reihenfolge angeordnet. Bei String-Feldern
wird streng nach DIN 5007 sortiert, d.h. Groß- und Kleinschreibung wird nicht berücksichtigt. Alle Umlaute
werden wie die ausgeschriebenen Buchstabenkombinationen behandelt (Ä = AE, Ö = OE ...). Wenn nur nach
ASCII-Werten sortiert werden soll, ist der Zusatz ASC anzugeben. Folgt hinter dem SORT-Befehl ein TO, so kann man dahinter beliebig viele weitere Feldbezeichner angeben, die dann auch gleich mit umsortiert werden. Dadurch ist es z.B. möglich, einen Adressendatensatz, der aus den Feldern Name$(), Straße$(), Postleitzahl(), Ort$(), Telefon() besteht, nach Namen zu sortieren und dabei gleich die anderen Felder mit umzuordnen, so daß danach die zusammengehörenden Elemente die gleichen Indizes haben. In diesem Fall würde der BASIC-Befehl lauten: SORT Name$() TO Straße$(),Postleitzahl(),Ort$(),Telefon() <Anzahl> gibt die Zahl der Elemente an, die sortiert werden sollen. Wird 0 angegeben, so wird das gesamte Feld sortiert. Das Weglassen des Anzahlparameters wirkt so, als hätten Sie den höchsten Index angegeben. In diesem Fall wird alles bis zum letzten Element sortiert. Hinweis: Wenn Felder mitsortiert werden sollen, so wird dafür zusätzlicher Speicher im Garbagebereich benötigt. Siehe das Kapitel 'Speicherorganisation im Omikron Basic'. Die benötigte Speichermenge können Sie wie folgt berechnen: Anzahl der Elemente in Feldbezeichner() mal 4 plus Speicherbedarf des größten Feldes, das mitsortiert werden soll. |
Beispiel: |
FOR I=0 TO 10 Werte(I)= RND(10) NEXT I SORT Werte() FOR I=0 TO 10 PRINT Werte(I) NEXT I DIM Texte$(11) |
Ergebnis: |
Das zweite Programm ließt maximal 12 Strings vom Benutzer ein, ordnet diese dann und gibt sie auf dem Bildschirm aus. |
siehe auch: |
SPACE$ | |
Typ: | Funktion |
Syntax: | SPACE$(<num.Ausdruck>) |
Erklärung: | Ergibt einen mit Leerzeichen (CHR$(32)) gefüllten String mit der durch den numerischen Ausdruck gegebenen Länge. Die Funktion ist identisch zu SPC |
Beispiel: |
|
Ergebnis: |
|
siehe auch: | SPC STRING$ |
SPC | |
Typ: | Funktion |
Syntax: | SPC(<num.Ausdruck>) |
Erklärung: | Ergibt einen mit Leerzeichen (CHR$(32)) gefüllten String mit der durch den numerischen Ausdruck gegebenen Länge. Die Funktion ist identisch zu SPACE$ |
Beispiel: |
|
Ergebnis: |
|
siehe auch: | SPACE$ STRING$ |
SQR | |
Typ: | Funktion |
Syntax: | SQR(<num.Ausdruck>) |
Erklärung: | Berechnet die Quadratwurzel des numerischen Ausdrucks. Der numerische Ausdruck muß ein positiver Wert sein. |
Beispiel: |
|
Ergebnis: |
|
siehe auch: | ^ (Potenzoperator) |
STEP | |
Typ: | Befehl |
Syntax: | STEP <num.Ausdruck> |
Erklärung: | Mit STEP können Sie die Schrittweite bei FOR ... NEXT Schleifen festlegen. Für den numerischen Ausdruck können beliebige Integer- oder Fließkommazahlen eingesetzt werden. Auch negative Zahlen sind zulässig. |
siehe auch: | FOR NEXT |
STOP | |
Typ: | Befehl |
Syntax: | STOP |
Erklärung: | STOP bricht die Programmausführung ab. Im Unterschied zu END wird vorher noch eine Fehlermeldung ausgegeben. |
Beispiel: | |
Ergebnis: | |
siehe auch: |
STR$ | |
Typ: | Funktion |
Syntax: | STR$(<num.Ausdruck>) |
Erklärung: | STR$ wandelt den numerischen Ausdruck in einen String um. STR$ ist also die Umkehrfunktion zu VAL. Bei der Umwandlung
werden alle mit USING getroffenen Einstellungen beachtet. STR$ wandelt immer ins Dezimal-Format, gegebenenfalls in Exponentialdarstellung. Zur Wandlung in andere Zahlensysteme verwenden Sie HEX$, OCT$ oder BIN$. |
Beispiel: |
USING " DM ###.##" Betrag$=STR$(12.121) USING ' abschalten PRINT Pi$,Betrag$ |
Ergebnis: |
|
siehe auch: | VAL BIN$ HEX$ OCT$ USING |
STRING$ | |
Typ: | Funktion |
Syntax: | STRING$(<num.Ausdruck>,{<num.Ausdruck>|<String-Ausdruck>}) STRING$(<Anzahl>,{ASCII-Code|<String-Ausdruck>} |
Erklärung: | Erzeugt einen String der Länge <Anzahl>, in dem das durch <String-Ausdruck> oder seinem entsprechenden <ASCII-Code> (siehe ASCII-Tabelle) gegebene Zeichen entsprechend oft vorkommt. Es gilt nur das erste in <String-Ausdruck> vorkommende Zeichen. |
Beispiel: |
|
Ergebnis: |
|
siehe auch: | SPACE$ SPC *(Stringmultiplikation) |
SWAP | |
Typ: | Befehl |
Syntax: | SWAP <Variable>,<Variable> |
Erklärung: | Vertauscht die Inhalte der beiden gegebenen Variablen. Die beiden Variablen müssen identischen Variablentyps sein. Es können auch Feldvariablen mit Einzelvariablen vertauscht werden. |
Beispiel: |
SWAP A,B PRINT A,B |
Ergebnis: |
|
siehe auch: |
SYSTEM | |
Erklärung: | Hat in Omikron Basic 6 keine Bedeutung und wird vom Compiler ignoriert. Bitte nicht verwenden. |
TAB | |
Typ: | Funktion |
Syntax: | TAB(<num.Ausdruck>) |
Erklärung: | Diese Funktion tabuliert Ausgaben von PRINT, LPRINT oder PRINT #. Der numerische Ausdruck gibt die neue Ausgabespalte an, auf die der Schreibzeiger vorrückt. Befindet sich der Zeiger bereits hinter der durch TAB definierten Spalte, so geschieht nichts. Der Zeiger wird also im Gegensatz zu @ nicht wieder zurückgesetzt. |
Beispiel: |
PRINT TAB(10);1.256;TAB(25);3.6589 |
Ergebnis: |
1.256 3.6589 |
siehe auch: | PRINT PRINT @ LPRINT |
TAN | |
Typ: | Funktion |
Syntax: | TAN(<num.Ausdruck>) |
Erklärung: | Berechnet den Tangens des numerischen Ausdrucks. Das Ergebnis ist abhängig vom eingestellten Winkelmodus. |
Beispiel: |
|
Ergebnis: |
|
siehe auch: | COT |
TANH | |
Typ: | Funktion |
Syntax: | TANH(<num.Ausdruck>) |
Erklärung: | Berechnet den Tangens-Hyperbolicus des numerischen Ausdrucks. |
Beispiel: |
|
Ergebnis: |
|
siehe auch: | COTH |
TEXT | |
Typ: | Befehl |
Syntax: | TEXT <num.Ausdruck>,<num.Ausdruck>,<String-Ausdruck> [,<num.Ausdruck>,<num.Ausdruck>,<num.Ausdruck>]
TEXT <X>,<Y>,<Ausgabetext> [,<Breite>,<Wortflag>, <Buchstabenflag>] |
Erklärung: | Dieser Befehl gibt einen formatierten Grafik-Text aus. Die Koordinaten X und Y erlauben pixelgenaues Positionieren
des Textes. Dabei wird der Text so ausgegeben, daß sich die linke Ecke der Basislinie an der Position (<X>,<Y>)
befindet. Wenn die Textbreite und die Formatflags mit angegeben sind, wird je nach Einstellung zusätzlich formatiert. Ist das Wortflag auf 1 gesetzt, so erfolgt die Anpassung der Breite durch eine Dehnung der Wortzwischenräume. Wenn zusätzlich das Buchstabenflag gesetzt ist, werden auch die Buchstabenzwischenräume angepasst, so daß ein ausgeglichener Blocksatz entsteht. Textfarbe, Stil, und Größe können über TEXT COLOR, TEXT STYLE, TEXT HEIGHT bzw. TEXT ROTATION bestimmt werden. Ist mittels CLIP ein Bildfenster definiert, so wird außerhalb dieses Bereiches nicht gezeichnet. Der verwendete Font kann mit der Prozedur 'Set_Text_Font' aus der ExtensionLibrary bestimmt werden. |
Beispiel: |
BOX 9,9,423,17 PRINT : PRINT |
Ergebnis: |
|
siehe auch: | TEXT COLOR TEXT HEIGHT TEXT STYLE Set_Text_Font |
TEXT COLOR | |
Typ: | Befehl |
Syntax: | TEXT COLOR = <num.Ausdruck> TEXT COLOR = <Farbnummer> |
Erklärung: | Definiert die Schriftfarbe für Grafik-Text. Mit der Prozedur 'Set_Text_Back_Color' aus der ExtensionLibrary läßt sich auch die Hintergrundfarbe verändern. |
Beispiel: | |
Ergebnis: | |
siehe auch: | TEXT Set_Text_Fore_Color Set_Text_Back_Color |
TEXT HEIGHT | |
Typ: | Befehl |
Syntax: | TEXT HEIGHT = <num.Ausdruck> TEXT HEIGHT = <Höhe in Pixeln> |
Erklärung: | Setzt die Texthöhe des Grafik-Textes. |
Beispiel: |
TEXT HEIGHT =Text_H TEXT 10,Y+5, STR$(Text_H)+" Punkt Textprobe" Y+=Text_H*2 NEXT Text_H |
Ergebnis: |
|
siehe auch: | TEXT Set_Text_Size |